verilog – 行为,RTL和门级之间的差异 |
您所在的位置:网站首页 › 门级 晶体管级 › verilog – 行为,RTL和门级之间的差异 |
试图完全理解Verilog的抽象级别之间的差异,我得到了每个级别的描述,但我仍然无法在游戏中得到它.
对于这种情况,我将粘贴一些Verilog代码以及我对它们的看法: >以下代码位于行为级别. always @ (a or b or sel) begin y = 0; if (sel == 0) begin y = a; end else begin y = b; end end >这(仅举例)是在门级 module test(clk, ready, next, Q); input clk, enable, next; output Q; \**SEQGEN** reg_1 (.clear(1'b0), .next_state(next), .clocked_on(clk), .Q(Q), .synch_enable(enable) ); endmodule >我不知道这个代码是在RTL还是门级(我希望always关键字使这个RTL而不是门级) module dff_from_nand(); wire Q,Q_BAR; reg D,CLK; nand U1 (X,D,CLK) ; nand U2 (Y,X,CLK) ; nand U3 (Q,Q_BAR,X); nand U4 (Q_BAR,Q,Y); // Testbench of above code initial begin $monitor("CLK = %b D = %b Q = %b Q_BAR = %b",CLK, D, Q, Q_BAR); CLK = 0; D = 0; #3 D = 1; #3 D = 0; #3 $finish; end always #2 CLK = ~CLK; endmodule 我已经知道初始开始和结束不可合成,只是用于测试.现在我有2个问题 >第三(和第二)代码是RTL还是Gate-Leve?什么是一个很好的RTL代码示例?我发现这个RTL Code Example但是真的是RTL吗?对我来说,它看起来像行为水平. >什么意味着Verilog网表?它与门级相同还是具有上下文基本定义? 我很困惑,因为在一些网站上我不知道他们是否说’这是一个使用逻辑门的Verilog代码’或’这是门级的Verilog代码’ 如果有人想解释有关这个主题的更多细节,我将非常高兴:) RTL:寄存器传输级,一种抽象硬件功能,使用always块编写,并分配可合成的语句(可以转换为门级).纯RTL不会实例化子模块. RTL可以包含指导合成器的子模块.结构RTL(仍称为RTL)是包含其他RTL模块的模块.示例:FSM(有限状态机)
always @* begin next_state = state; if (count>0) next_count = count - 1; case (state) IDLE : if(do_start) begin next_state = START; next_count = 2; end START : if (do_wait) begin next_count = count; end else if (count==0) begin next_state = RUN; next_count = count_from_input; end RUN : if (do_stop) begin next_state = IDLE; end if (do_wait) begin next_count = count; end else if (count==0) begin next_state = IDLE; end endcase end always @(posedge clk, negedge rst_n) begin if (!rst_n) begin count |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |